package routers

import (
	"gitee.com/xianglinzeng/gwayne/middleware"
	"gitee.com/xianglinzeng/gwayne/pkg/config"
	"github.com/gin-gonic/gin"
)

func InitRouter() *gin.Engine {
	r := gin.New()

	// 记录日志和恢复
	r.Use(gin.Logger())
	r.Use(gin.Recovery())

	// 配置 CORS 中间件
	r.Use(middleware.Cors())

	gin.SetMode(config.Conf.App.RunMode)

	// 404 handler
	/*r.NoRoute(func(c *gin.Context) {
		code := e.PAGE_NOT_FOUND
		c.JSON(404, gin.H{"code": code, "message": e.GetMsg(code)})
	})*/
	//r.GET("/healthz", healthz.Healthz)

	r.GET("/healthz", func(c *gin.Context) {
		// 这里可以添加数据库连接检查、外部服务检查等
		// 假设健康检查通过，可以返回正常状态
		c.JSON(200, gin.H{
			"status":   "ok",
			"database": "connected", // 可以加上数据库连接状态
			"uptime":   "72 hours",  // 服务器运行时间
		})
	})

	// 注册鉴权路由
	AuthRoutes(r)

	// 定义 /api/v1 路由组
	apiV1 := r.Group("/api/v1")
	apiV1.Use(middleware.Cors())
	{
		// 定义 clusters 子路由
		SetupClustersRoutes(apiV1)

		// 定义 config 子路由
		SetupConfigRoutes(apiV1)

		SetupKubernetesNodeRoutes(apiV1)

		SetupKubernetesProxyResourcesRoutes(apiV1)
	}

	return r
}
